Управление сетевыми папками
------------------------------------------------------------------------------

Права доступа на новую папку
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Для общих папок обязательны следующие параметры, настраиваемые на портале управления **ALD Pro** (Роли и службы сайта-Общий доступ к файлам-Сервер-Папка)- на примере папки ``shared_folder``:

.. code-block:: bash 
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    map archive = no
    browseable = yes
    writable = yes
    valid users = @NOBODY
    invalid users =
    read list =
    write list =
    admin users =

Для того, чтобы при создании новых файлов владельцу не устанавливался флаг Execute, нужно отключить сопоставление DOS атрибута Archive с помощью параметра «map archive = no».

Значения ``NOBODY`` для списка ``valid users`` указывается, когда нет списка пользователей, которым открыт доступ к папке. Это необходимо в целях ограничения доступа пользователей к ресурсу. 

.. code-block:: bash
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    browseable = yes
    valid users = @admin

Уровень «Чтение» - viewer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Чтобы пользователям группы назначить доступ на чтение, их необходимо включить в списки ``valid users`` и ``read list``. А группу ``NOBODY`` удалить. Пример для группы ``viewers``:

.. code-block:: bash
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    browseable = yes
    writable = yes
    valid users = @viewers
    invalid users =
    read list = @viewers
    write list =
    admin users =

Пользователь видит папку, но доступа на создание, редактирование и удаление нет.

Уровень «Полный доступ» - fullcontrol
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Чтобы пользователям/группам назначить полный административный доступ (Root доступ), их необходимо включить в списки ``valid users``, ``admin users`` и ``write list``. Это позволит действовать на файловом сервере от имени ``root`` в обход списков доступа файловой системы.

.. code-block:: bash
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    browseable = yes
    writable = yes
    valid users = @viewers @admins
    invalid users =
    read list = @viewers
    write list = @admins
    admin users = @admins

Пользователь видит папку, есть доступы на создание, редактирование и удаление.

Уровень «Изменение и назначение прав» - editor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Чтобы пользователям группы были назначены права на запись и на изменение прав доступа к объектам, их необходимо включить в списки ``valid users`` и ``write list``.
Пример для группы ``editors``:

.. code-block:: bash
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    browseable = yes
    writable = yes
    valid users = @viewers @admins @editors
    invalid users =
    read list = @viewers
    write list = @admins @editors
    admin users = @admins

Уровень «Доступ запрещен» - invalid
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Чтобы пользователям группы запретить доступ к ресурсу, их необходимо включить в список ``invalid users``.
Пример для группы ``guests``:

.. code-block:: bash
    
    [shared_folder]
    path = /opt/samba_shares/shared_folder
    browseable = yes
    writable = yes
    valid users = @viewers @admins @editors
    invalid users = @guests
    read list = @viewers
    write list = @admins @editors
    admin users = @admins

Пользователь не видит папку, соответственно доступов на создание, редактирование и удаление нет.

Дополнительные параметры
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

В свойствах сетевой папки присутствуют параметры **Тип виртуальной файловой системы**, **Права доступа для новых файлов**, **Права доступа для новых папок** и **Наследование прав доступа**.

Дополнительный параметр «Тип виртуальной файловой системы»
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

В настройки общей сетевой папки присутствует переключатель «Тип виртуальной файловой системы» со следующими значениями:

``POSIX ACL`` — использование стандартных механизмов ``POSIX ACL`` без подключения дополнительных модулей виртуальной файловой системы, что обеспечивает полную поддержку Linux и базовую совместимость с Windows. При выборе этого типа виртуальной файловой системы параметр ``vfs objects`` не должен содержать модулей ``ACL``:

.. code-block::
    
    [shared_folder]
    ...
    vfs objects =

``ACL XATTR`` — подключение модуля ``acl_xattr``, который обеспечивает хранение Windows ACL, используя базовые механизмы ``POSIX ACL``, что обеспечивает максимально возможную совместимость моделей безопасности Linux и Windows. При выборе этого типа виртуальной файловой системы параметр ``vfs objects`` должен содержать модуль ``acl_xattr``:

.. code-block::
    
    [shared_folder]
    ...
    vfs objects = acl_xattr

``NFS4 ACLs`` — подключение модуля ``nfs4acl_xattr``, который хранит списки доступа ``NFS4`` в виде бинарных объектов в расширенных атрибутах файлов (EAs/xattrs), что обеспечивает полную поддержку Windows без поддержки Linux. При выборе этого типа виртуальной файловой системы параметр ``vfs objects`` должен содержать модуль ``nfs4acl_xattr``:

.. code-block::
    
    [shared_folder]
    ...
    vfs objects = nfs4acl_xattr

Дополнительный параметр «Права доступа для новых файлов и папок»
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

При создании новых файлов/папок через SMB подключение им назначаются права доступа «rw-r--r--» и «rwxr-xr-x» соответственно, что подходит для личных папок, но не подходит для общих папок, которые используются для совместной работы, поэтому в настройки сетевой папки необходимо добавить переключатель «Права доступа на файлы/папки» со следующими значениями:

- Права на файлы — устанавливает параметр ``force create mode``, по умолчанию ``0777``
- Права на папки — устанавливает параметр ``force directory mode``, по умолчанию ``0777``

Дополнительный флажок «Наследовать права доступа»
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Если необходимо управлять правами доступа через механизм наследования, то в настройки сетевой папки добавляется флажок «Наследовать права доступа». Если этот флажок включен, то значения параметров ``force create mode`` и ``force directory mode`` игнорируются, поэтому соответствующие поля можно делать неактивными.

При установке флажка «Наследовать права доступа» в конфигурационном файле smb.conf должны быть заданы следующие параметры:

.. code-block::
    
    [hared_folder]
    ...
    inherit permissions = yes
    inherit acls = yes

Управление папками
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

При удалении общей папки, локальная папка остается.

- ``path``: указывает на директорию на сервере Samba, которая будет доступна по сети. Если изменить этот параметр, сетевая папка будет указывать на другую локальную папку. Если по пути локальной папки нет, то она создастся

Пример:

.. code-block:: 

    path = /home/samba/shared

- ``browseable``: определяет, будет ли эта папка доступна для просмотра в браузерах сетевых ресурсов (например, в проводнике Windows).

Значения: ``yes``: папка будет доступна для просмотра. ``no``: папка будет скрыта.

Пример:
  
.. code-block:: 

    browseable = yes

- ``access based share enum`` (ABE): позволяет создавать правила доступа к папке на основе пользователей и групп. Например, можно разрешить только чтение для определенной группы, а другим - запись.

Значения: ``yes``: ABE включен. ``no``: ABE отключен.

Пример:

.. code-block:: 

    access based share enum = yes

- ``vfs objects``: список модулей, которые расширяют функциональность Samba. Например, модуль ``streams_xattr`` позволяет работать с расширенными атрибутами файлов.

Пример:

.. code-block:: 
  
    vfs objects = streams_xattr

- ``force directory mode``: устанавливает режим доступа (права) для всех новых подкаталогов, создаваемых в данной папке. 

Значения: Число, представляющее собой режим доступа в восьмеричной системе счисления.

Пример:

.. code-block:: 

    force directory mode = 0755 (чтение, запись для владельца, чтение для группы, чтение для других)

- ``force create mode``: устанавливает режим доступа для всех новых файлов, создаваемых в данной папке. 

Значения: Число, представляющее собой режим доступа в восьмеричной системе счисления.

Пример:

.. code-block::

    force create mode = 0644 (чтение, запись для владельца, чтение для группы, чтение для других)

- ``inherit permissions``: указывает, будут ли права доступа к файлам и папкам наследуемы от родительской папки. 

Значения: ``yes``: права наследуются. ``no``: права не наследуются.

Пример:

.. code-block::

    inherit permissions = yes

- ``inherit acls``: указывает, будут ли ACL (списки управления доступом) наследуемы от родительской папки. 

Значения: ``yes``: ACL наследуются. ``no``: ACL не наследуются.

Пример:

.. code-block::

    inherit acls = yes 

Аутентификация
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Начиная с версии 2.4.0 ``passdb backend`` больше не используется. Теперь конфигурация **Samba** генерируется по шаблону:

.. code-block::
    
    [global]
    workgroup = c-1.ald.company.lan
    realm = c-1.ald.company.lan
    dedicated keytab file = FILE:/etc/samba/samba.keytab
    kerberos method = dedicated keytab
    idmap config c-1 : 1457400000-1457599999
    idmap config c-1 : backend = sss
    idmap config * : range = 0 - 0
    log file = /var/log/samba/log.%m
    include = registry
    include = /etc/samba/share.conf


.. code-block::
    
    [homes]
    browsable = yes
    writable = yes
    create mask = 0600
    directory mask = 0700
    valid users = %S
    read only = No
    guest ok = no

где:
- c-1 - это значение до первой точке в имени домена в верхнем регистре.

- 1457400000-1457599999 - это диапазон id. Он считается по формуле из атрибутов записи ``cn=c-1.ald.company.lan_id_range,cn=ranges,cn=etc,dc=c-1,dc=ald,dc=company,dc=lan``:

- первое число - ``ipaBaseID``

- второе число - ``ipaBaseID + ipaIDRangeSize - 1``

- ``include = registry`` - активирует работу регистра. позволяет переопределять в нем конфигурации

- ``include = /etc/samba/share.conf`` - подключает конфигурационный файл, в который пишется конфигурация.